// 获取公共和私有的路由表
import { publicRoutes, privateRoutes } from '@/router'
export default {
    namespaced: true,//namespaced: true 的方式使其成为带命名空间的模块。保证在变量名一样的时候，添加一个父级名拼接。
    state: {
        // 路由表 初始化要有静态路由的权限也就是白名单
        routes: privateRoutes
    },
    mutations: {
        // 添加路由
        setRoutes(state, newRoutes) {
            // 全部都是在静态路由上添加新路由
            state.routes = [...publicRoutes, ...newRoutes]
        }
    },
    actions: {
        // 根据后台返回回来的路由权限添加路由
        filterRoutes({ commit }, menus) {
            const routes = []
            // 进行循环遍历匹配
            menus.forEach((key) => {
                routes.push(...privateRoutes.filter((item) => {
                    return item.name === key
                }))
            })

            // 然后不匹配的进入404页面
            routes.push({
                path: '/:catchAll(.*)',
                redirect: '/404'
            })
            // 调用添加的方法
            commit("setRoutes",routes)
            return routes
        }
    }
}